Pattern Matching এবং match এক্সপ্রেশনের ব্যবহার

Enums এবং Pattern Matching (এনাম এবং প্যাটার্ন ম্যাচিং) - রাস্ট (Rust) - Computer Programming

306

Pattern Matching (প্যাটার্ন মেচিং)

রাস্টে Pattern Matching একটি শক্তিশালী বৈশিষ্ট্য, যা আপনাকে ডেটার সাথে মিল রেখে বিভিন্ন কন্ডিশন পরীক্ষা করতে এবং বিভিন্ন ধরনের প্যাটার্নকে চিহ্নিত করতে সাহায্য করে। এটি সাধারণত match এক্সপ্রেশন দিয়ে ব্যবহার করা হয়, যা C, C++, অথবা অন্যান্য ভাষার switch স্টেটমেন্টের মতো কাজ করে, তবে আরো শক্তিশালী এবং নমনীয়।

Pattern Matching ব্যবহারের মাধ্যমে আপনি কোনো ডেটা বা ভেরিয়েবলের ধরন, মান, অবস্থান ইত্যাদি চেক করতে পারেন এবং সেই অনুযায়ী কাজ করতে পারেন।


match এক্সপ্রেশন

match এক্সপ্রেশনটি রাস্টের pattern matching এর মূল উপাদান। এটি একটি এক্সপ্রেশন যা বিভিন্ন প্যাটার্নের সাথে ডেটা মিলিয়ে সঠিক কোড ব্লক নির্বাচন করে এক্সিকিউট করে।

Syntax:

match value {
    pattern1 => expression1,
    pattern2 => expression2,
    _ => default_expression, // Catch-all case, equivalent to 'else'
}
  • value: যে ভেরিয়েবল বা এক্সপ্রেশনটি আপনি মিলাতে চান।
  • pattern1, pattern2: প্যাটার্ন যা আপনি যাচাই করতে চান। প্যাটার্নগুলি ভ্যালু অনুযায়ী বিভিন্ন ধরণের হতে পারে, যেমন নাম্বার, টিউপল, স্ট্রাকচার ইত্যাদি।
  • _: এটি একটি ডিফল্ট প্যাটার্ন, যা কোনো অন্যান্য প্যাটার্ন মেলেনি এমন ক্ষেত্রে এক্সিকিউট হয়।

match এক্সপ্রেশনের উদাহরণ

১. নম্বর প্যাটার্ন

fn main() {
    let x = 5;

    match x {
        1 => println!("x is one"),
        2 => println!("x is two"),
        3 => println!("x is three"),
        _ => println!("x is something else"), // Catch-all
    }
}

এখানে, x এর মান ৫, যা কোনো নির্দিষ্ট প্যাটার্নের সাথে মেলে না, তাই _ প্যাটার্নটি কাজ করবে এবং আউটপুট হবে "x is something else"

২. কন্ডিশনাল প্যাটার্ন

fn main() {
    let x = 10;

    match x {
        n if n < 10 => println!("x is less than 10"),
        n if n == 10 => println!("x is equal to 10"),
        n if n > 10 => println!("x is greater than 10"),
        _ => println!("Something went wrong"), // Catch-all case
    }
}

এখানে, match এক্সপ্রেশনটি শর্ত (condition) অনুযায়ী n এর মান যাচাই করে। n if n == 10 শর্তটি সত্য হলে "x is equal to 10" প্রিন্ট হবে।

৩. টিউপল প্যাটার্ন

fn main() {
    let pair = (2, 3);

    match pair {
        (0, y) => println!("First is zero, second is {}", y),
        (x, 0) => println!("First is {}, second is zero", x),
        (x, y) => println!("First is {}, second is {}", x, y),
    }
}

এখানে, pair একটি টিউপল যা (2, 3)match এক্সপ্রেশনটি প্রথম দুটি প্যাটার্নের সাথে মেলে না, তবে তৃতীয় প্যাটার্নটি সঠিক মেলে এবং আউটপুট হবে "First is 2, second is 3"

৪. ইউনিয়ন টাইপ (Enums) প্যাটার্ন

রাস্টে enums ব্যবহারে match এক্সপ্রেশন বেশ শক্তিশালী হয়ে ওঠে। ইউনিয়ন টাইপের মানগুলি match এর মাধ্যমে সহজে চিহ্নিত এবং প্রক্রিয়া করা যায়।

enum Direction {
    Up,
    Down,
    Left,
    Right,
}

fn main() {
    let move_direction = Direction::Up;

    match move_direction {
        Direction::Up => println!("Moving up"),
        Direction::Down => println!("Moving down"),
        Direction::Left => println!("Moving left"),
        Direction::Right => println!("Moving right"),
    }
}

এখানে, move_direction হল একটি enum এবং match এক্সপ্রেশনটি ডিরেকশন অনুযায়ী সঠিক কোড ব্লক এক্সিকিউট করবে। move_direction এর মান Direction::Up হলে আউটপুট হবে "Moving up"


match এর শক্তিশালী বৈশিষ্ট্যসমূহ

  • ডিফল্ট _ প্যাটার্ন: যদি কোনো নির্দিষ্ট প্যাটার্ন মেলে না, তবে _ দিয়ে ডিফল্ট আউটপুট দেওয়া যেতে পারে।
  • গহীন প্যাটার্ন: প্যাটার্নের মধ্যে আরও গহীন ভাবে মূল্যায়ন করা সম্ভব (যেমন টিউপল বা enum ব্যবহার করে আরও বেশি প্যাটার্ন মেচিং করা)।
  • ইন্টারনাল ভেরিয়েবল অ্যাক্সেস: আপনি প্যাটার্নের মধ্যে ডেটা (যেমন টিউপল বা struct) বের করে এবং সেটি ব্যবহার করতে পারেন।
  • নামকরণ: আপনি প্যাটার্নে কোনো পরিবর্তনশীল নাম ব্যবহার করতে পারেন যাতে ডেটার মানকে তার নিজস্ব ভেরিয়েবলে সংরক্ষণ করতে পারেন।

সারাংশ

রাস্টের match এক্সপ্রেশন একটি শক্তিশালী প্যাটার্ন মেচিং প্রযুক্তি যা বিভিন্ন ডেটা প্যাটার্নের সাথে সহজে মেলে এবং সঠিক কোড এক্সিকিউট করে। এটি প্রোগ্রামিংয়ের ক্ষেত্রে শর্ত নির্ধারণ এবং বিভিন্ন ডেটা টাইপের সাথে কাজ করতে অত্যন্ত কার্যকর এবং নমনীয় পদ্ধতি প্রদান করে। match স্টেটমেন্টটি সি এবং সি++ এর switch স্টেটমেন্টের তুলনায় অনেক বেশি কার্যকর এবং সুরক্ষিত।

Content added By
Promotion

Are you sure to start over?

Loading...